package com.sky.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.sky.domain.PmsBrand;
import com.sky.service.PmsBrandService;
import com.sky.utils.PageQuery;
import com.sky.utils.R;
import com.sky.valid.addGroup;
import com.sky.valid.updateGroup;
import jakarta.annotation.Resource;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.Arrays;

@RestController
@RequestMapping("/pmsBrand")
public class PmsBrandController {

    @Resource
    private PmsBrandService pmsBrandService;

    /**
     * 分页查询品牌信息
     * @param param 分页对象，包含当前页和每页数量
     * @return 返回分页查询结果
     */
    @PostMapping ("/page")
    public R page(@RequestBody PageQuery<PmsBrand> param){
        IPage<PmsBrand> brandPage = pmsBrandService.queryPage(param);
        return R.ok(brandPage);
    }

    /**
     * 根据品牌ID查询品牌信息
     * @param brandId 品牌ID
     * @return 返回查询到的品牌信息
     */
    @GetMapping("/getById/{brandId}")
    public R getById(@PathVariable("brandId") Long brandId){
        PmsBrand brand = pmsBrandService.getById(brandId);
        return R.ok(brand);
    }

    /**
     * 添加品牌信息
     * @param pmsBrand 品牌实体对象，包含品牌详细信息
     * @return 返回添加结果，成功返回OK，失败返回错误信息
     */
    @PostMapping("/add")
    public R add(@Validated(addGroup.class) @RequestBody PmsBrand pmsBrand){
        boolean save = pmsBrandService.save(pmsBrand);
        return save ? R.ok() : R.error();
    }

    /**
     * 更新品牌信息
     * @param pmsBrand 品牌实体对象，包含需要更新的 brandId 和其他品牌信息
     * @return 返回更新结果，成功返回OK，失败返回错误信息
     */
    @PostMapping("/update")
    public R update(@Validated(updateGroup.class) @RequestBody PmsBrand pmsBrand){
        boolean update = pmsBrandService.updateBrand(pmsBrand);
        return update ? R.ok() : R.error();
    }

    /**
     * 根据品牌ID删除品牌信息
     * @param brandIds 品牌ID
     * @return 返回删除结果，成功返回OK，失败返回错误信息
     */
    @DeleteMapping("/delete")
    public R delete(@RequestBody Long[] brandIds){
        boolean remove = pmsBrandService.removeBatchByIds(Arrays.asList(brandIds));
        return remove ? R.ok() : R.error();
    }
}
